Reference
- Numpy - Numpy.org
- 문제 출처 - HackerRank
- 파이썬 연습 - Practice - Python
개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
문제를 풀고 Discussion Tab을 참고하며 코드 스타일을 개선하려고 노력하고자 합니다
Numpy
개요 - About NumPy
Numpy는 Python에서 scientific computing을 하기 위한 기본 패키지입니다.
Scientific computing이란
과학적 문제를 해결 및 분석하기 위한 시뮬레이션이나 수학적 모델링 및 정량 분석 등을 수행하는 소프트웨어 및 애플리케이션을 개발하는 것을 말합니다
Numpy의 특징들 중에서도 특히:
- 강력한 N-차원 배열 객체
[a powerful N-dimensional array object] - 세련된 기능들
[sophisticated (broadcasting) functions] - C/C++ 및 Fortran 코드 통합 도구
[tools for integrating C/C++ and Fortran code] - 유용한 선형 대수, 푸리에 변환 및 난수 기능
[useful linear algebra, Fourier transform, and random number capabilities]
이런 과학적인 용도 이외에도, Numpy는 일반 데이터의 효율적인 다차원 컨테이너로 사용될 수 있으며 임의의 데이터 타입을 선언할 수도 있습니다.
Numpy를 통해 다양한 데이터베이스와 원활하고 신속하게 통합할 수 있습니다.
역사 - Older Array Packages
파이썬에서 최초로 배열 객체와 관련해서 작성된 패키지는 Numeric 이였습니다.
과거에는 다양한 어플리케이션 개발에 유용하게 사용되었는데… 사람의 욕심은 끝이 없고…
더 많은 기능이 포함된 Numarray 패키지를 구현해서 사용하게 됩니다.
굳이 2개로 놔두는 것 보다 통합하는 것이 좋겠다 싶어서 Numeric과 Numarray 패키지의 기능들을 모두 포함시켜 지금의 NumPy 패키지를 탄생시켰습니다.
NumPy가 처음 만들어지고 이제 막 사용되던 2005년 말 약 6개월 동안에는 SciPy Core 라고 불렸습니다.
하지만 좀 더 명확하게 용도와 기능에 맞게 구분하기 위해 현재 SciPy 패키지는 따로 분리되어 존재하게 되었고
2006년 1월에 Numeric + Python 을 합쳐 NumPy 라는 명칭으로 변경되어 현재까지 사용되고 있습니다.
HackerRank
1차원 - vector (row)
2차원 - matrix (row, column)
3차원 - tensor (row, column, depth)
axis에 대해서: 2차원 좌표평면을 생각하면서 x축(row), y축(col)이 각각 0, 1에 해당한다고 생각하면 외우기 쉬움
- NumPy에서 axis의 이해 TAEWAN.KIM
Min, Max
각 열의 최소값을 먼저 찾고 그 중 최대값을 결과로 출력하는 문제
배열만 사용하기 때문에 array만 호출하고,
‘.’을 사용한 코딩
from numpy import array |
__ 극한의 한 줄 코딩
print(np.max(np.min(np.array([input().split() for _ in range(int(input().split()[0]))],int),axis=1))) |
Floor, Ceil, Rint
이 문제에서는 내림, 올림, 반올림(정수로)만 다루지만 추가적으로,
- around() : 0.5를 기준으로 올림 혹은 내림
- round_( , N) : N 소수점 자릿수까지 반올림
- fix() : ‘0’ 방향으로 가장 가까운 정수로 올림 혹은 내림
- trunc() : 각 원소의 소수점 부분은 잘라버리고 정수값만 남김
들이 존재한다.
이런 출력 방식이 있다는 것을 참고!
import numpy as np |